

import asyncio
from typing import List

from llama_index.core.agent.workflow import  FunctionAgent
from llama_index.core.base.llms.types import ChatMessage
from llama_index.core.node_parser import HierarchicalNodeParser, LlamaParseJsonNodeParser
from llama_index.core.storage.chat_store.sql import SQLAlchemyChatStore
from llama_index.core.tools import QueryEngineTool
from llama_index.core.vector_stores import SimpleVectorStore
from llama_index.core.schema import  TextNode
from llama_index.core import Settings, SimpleKeywordTableIndex, SummaryIndex, get_response_synthesizer, StorageContext, \
    VectorStoreIndex, SimpleDirectoryReader
from llama_index.embeddings.zhipuai import ZhipuAIEmbedding
from llama_index.core.graph_stores import SimplePropertyGraphStore
from llama_index.core.schema import Document
from pydantic import BaseModel, Field

embed_model = ZhipuAIEmbedding(
    model="embedding-2",
    api_key="f387f5e4837d4e4bba6d267682a957c9.PmPiTw8qVlsI2Oi5"
    # With the `embedding-3` class
    # of models, you can specify the size
    # of the embeddings you want returned.
    # dimensions=1024
)
Settings.embed_model=embed_model

from llama_index.llms.deepseek import DeepSeek

llm = DeepSeek(model="deepseek-chat", api_key="sk-605e60a1301040759a821b6b677556fb")
Settings.llm = llm
from llama_index.core.node_parser.file.json import JSONNodeParser
from llama_index.core.schema import Document



json_splitter = JSONNodeParser()
input_text = Document(
    text='[{"name": "John", "age": 30}, {"name": "Alice", "age": 25}]'
)
result = json_splitter.get_nodes_from_documents([input_text])
print(result)

test_data = Document(
        text=""
    )
from llama_index.core.llms.mock import MockLLM
from llama_index.core.node_parser.relational.markdown_element import (
    MarkdownElementNodeParser,
)
from llama_index.core.schema import Document, IndexNode, TextNode

node_parser = MarkdownElementNodeParser(llm=MockLLM())

nodes = node_parser.get_nodes_from_documents([test_data])
print(f"Number of nodes: {len(nodes)}")
for i, node in enumerate(nodes, start=0):
    print(f"Node {i}: {node}, Type: {type(node)}")
 